package org.linlinjava.litemall.db.service;

import org.linlinjava.litemall.db.dao.LitemallFormPurchaseItemMapper;
import org.linlinjava.litemall.db.domain.*;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Service
public class LitemallFormPurchaseItemService {

    @Resource
    private LitemallFormPurchaseItemMapper Mapper;

    public List<LitemallFormPurchaseItem> list(Integer purchaseId){
        LitemallFormPurchaseItemExample example = new LitemallFormPurchaseItemExample();
        LitemallFormPurchaseItemExample.Criteria criteria = example.createCriteria();
        criteria.andFormPurchaseIdEqualTo(purchaseId);
        return Mapper.selectByExample(example);
    }

    public int batchInsert(List<LitemallFormPurchaseItem> list){
        for (LitemallFormPurchaseItem purchaseItem:list) {
            purchaseItem.setAddTime(LocalDateTime.now());
            purchaseItem.setUpdateTime(LocalDateTime.now());
            purchaseItem.setDeleted(false);
        }
        return Mapper.batchInsert(list);
    }

    public int batchInsert(Integer purchaseId){
        LitemallFormPurchaseItemExample example = new LitemallFormPurchaseItemExample();
        LitemallFormPurchaseItemExample.Criteria criteria = example.createCriteria();
        criteria.andFormPurchaseIdEqualTo(purchaseId);
        return Mapper.deleteByExample(example);
    }

    public void updateStatusAndTime(Integer id, String status,LocalDateTime inspectionCompletionTime) {
        LitemallFormPurchaseItem cart = new LitemallFormPurchaseItem();
        cart.setStatus(status);
        if(inspectionCompletionTime!=null){
            cart.setInspectionCompletionTime(inspectionCompletionTime);
        }
        LitemallFormPurchaseItemExample example = new LitemallFormPurchaseItemExample();
        example.or().andIdEqualTo(id);
        Mapper.updateByExampleSelective(cart, example);
    }

    public void updateCheckStatusAndReceivedAmount(Integer id, String checkStatus ,BigDecimal receivedAmount) {
        LitemallFormPurchaseItem cart = new LitemallFormPurchaseItem();
        cart.setCheckStatus(checkStatus);
        cart.setReceivedAmount(receivedAmount);
        LitemallFormPurchaseItemExample example = new LitemallFormPurchaseItemExample();
        example.or().andIdEqualTo(id);
        Mapper.updateByExampleSelective(cart, example);
    }

    public void updateStatusAndCheckStatusAndReceivedAmount(Integer id,String status, String checkStatus,BigDecimal receivedAmount) {
        LitemallFormPurchaseItem cart = new LitemallFormPurchaseItem();
        cart.setStatus(status);
        cart.setCheckStatus(checkStatus);
        if(receivedAmount!=null){
            cart.setReceivedAmount(receivedAmount);
        }
        LitemallFormPurchaseItemExample example = new LitemallFormPurchaseItemExample();
        example.or().andIdEqualTo(id);
        Mapper.updateByExampleSelective(cart, example);
    }

    public void uploadAttachments(Integer id,String remark,String remarkImage) {
        LitemallFormPurchaseItem cart = new LitemallFormPurchaseItem();
        cart.setRemark(remark);
        cart.setRemarkImage(remarkImage);
        cart.setRemarkTime(LocalDateTime.now());
        LitemallFormPurchaseItemExample example = new LitemallFormPurchaseItemExample();
        example.or().andIdEqualTo(id);
        Mapper.updateByExampleSelective(cart, example);
    }



}
